#include <stdio.h>

typedef struct {
    int x;
    int y;
    int radius;
    void (* zoom)(int*, int);
} Circle;

void zoom(int *radius, int a)
{
    *radius = *radius * a;
}

void initCircle(Circle *pCir, void (* pZoom)(int*, int))
{
    pCir->x = 0;
    pCir->y = 0;
    pCir->radius = 1;
    pCir->zoom = pZoom;
}

void zoomCircle(Circle *pCir, int a)
{
    pCir->zoom(&(pCir->radius), a);
}

int main(void)
{
    Circle circle;

    initCircle(&circle, zoom);

    zoomCircle(&circle, 10);

    printf("radius = %d\n", circle.radius);

    return 0;
}